/**************************************************************
 * created by yang.zheng on 2020-07-29 for user route file
 **************************************************************/

 //引入日志助手
 const {logs , EncodeMD5, DecodeAES} = require('../utils')

 
//引入数据模型
const UserSchema = require('../schema/UserSchema')

 //路由注册
 const UserRoute = app => {
     //登录接口
     app.post('/user/login',(req,res) => {
        logs('user login',req.body)
        let data = req.body
        //根据用户名查询信息
        UserSchema.findOne({userId:data.userId},(err,doc) => {
            if(!!err) {
                logs('user/login 服务器错误',err)
                res.send({code:500,message:'登录失败，服务器错误'})
            }else{
                
                if(!!doc){
                    //对用户密码明文加密后进行对比
                    let newPwd = EncodeMD5(doc.userPwd);
                    //生成一个MD5票据
                    let token = EncodeMD5(doc.userId + '.' + newPwd + '.' + Date.now());
                    if (newPwd === data.userPwd){
                        logs('user/login 登录成功',doc)
                        res.send({code:200,message:'',data:{
                            userId : doc.userId,
                            userName : doc.userPwd,
                            userMoblie: doc.userMoblie,
                            token
                        }})
                    }else {
                        logs('user/login 登录失败',doc)
                        res.send({code:400,message:'用户密码错误'})
                    }
                    
                }else{
                    logs('user/login 登录失败',doc)
                    res.send({code:400,message:'登录用户名错误'})
                }
                
            }
        }) 
    })

    //用户列表接口
    app.get('/user/list',(req,res) => {
        let query = req.query,
            reg = new RegExp(query.userName,'i')
        UserSchema.find({userName:{$regex:reg}},(err,doc) => {
            if(!!err) {
                logs('user/list 服务器错误',err)
                res.send({code:500,message:'查询失败，服务器错误'})
            }else{
                logs('user/list 查询成功',doc)
                res.send({code:200,message:'',data:doc}) 
            }
        })
    })

    //添加用户接口
    app.post('/user/add',(req,res) => {
        let data = req.body,
            headers = req.headers;
        let userInfo = DecodeAES(data.str,headers.token);
        logs('user/add 解密数据',header);

        let userModel = new UserSchema(data);
        logs('user/add 接收参数',userModel);
        res.send({code:200,message:'',data:doc}) 

        // userModel.save((err,doc) => {
        //     if(!!err) {
        //         logs('user/add 服务器错误',err)
        //         res.send({code:500,message:'查询失败，服务器错误'})
        //     }else{
        //         logs('user/add 新增成功',doc)
        //         res.send({code:200,message:'',data:doc}) 
        //     }
        // })
    })

    //修改用户接口
    app.put('/user/:id',(req , res) => {
        let userId = req.params.id,
            data = req.body;
        //updata方法用来修改数据，第一个值为查询条件，第二个是修改后的完整数据，第三个是回调函数
        UserSchema.update({userId},data,(err , doc) => {
            if (!!err) {
                logs('user/:id 修改用户信息',err);
                res.send({code:500,message:'修改用户失败，服务器错误'});
            }else {
                res.send({code:200,message:'修改用户成功'});
            }
        });
    });

    //删除数据接口    
    app.delete('/user/:id', (req , res) => {
        let userId = req.params.id;

        //调用remove方法删除数据
        UserSchema.remove({userId}, err => {
            if (!!err) {
                res.send({code : 500, message : '删除失败，服务器错误'});
                logs(e);
            }else {
                res.send({code : 200, message : '删除成功'});
            }
        })
    })
 }

 //导出用户路由对象
module.exports = UserRoute